const express = require('express');
const router = express.Router();
const modelController = require('../controllers/modelController');
const fileController = require('../controllers/fileController');
const authMiddleware = require('../middleware/authMiddleware');

// 所有模型路由都需要验证令牌
router.use(authMiddleware.verifyToken);

// 获取模型列表
router.get('/', modelController.getModels);

// 获取可用几何体类型
router.get('/geometry-types', modelController.getGeometryTypes);

// 创建新模型
router.post('/', modelController.createModel);

// 创建外部模型
router.post('/external', modelController.createExternalModel);

// 更新模型信息
router.put('/:modelId', modelController.updateModel);

// 更新外部导入模型的属性
router.put('/:modelId/external-model', modelController.updateExternalModel);

// 删除模型
router.delete('/:modelId', modelController.deleteModel);

// 获取模型详情
router.get('/:modelId', modelController.getModelById);

// 新增 - 布尔运算
router.post('/:modelId/boolean-operation', modelController.performBooleanOperation);

// 新增 - 创建自定义几何体
router.post('/custom', modelController.createCustomModel);

// 新增 - 创建文本模型
router.post('/text3d', modelController.createText3DModel);

// 新增 - 创建拉伸模型
router.post('/extrude', modelController.createExtrudeModel);

// 新增 - 创建车削模型
router.post('/lathe', modelController.createLatheModel);

// 新增 - 创建组合模型
router.post('/group', modelController.createGroupModel);

// 新增 - 一步创建并上传外部模型
router.post('/external/upload', fileController.createAndUploadExternalModel);

// 新增 - 模型导出
router.get('/:modelId/export/:format', modelController.exportModel);

// 文件操作路由
// 上传模型文件
router.post('/:modelId/upload', fileController.uploadModelFile);

// 上传纹理贴图
router.post('/:modelId/texture', fileController.uploadTextureFile);

// 下载模型文件
router.get('/:modelId/download', fileController.downloadModelFile);

// 获取模型缩略图
router.get('/:modelId/thumbnail', fileController.getModelThumbnail);

module.exports = router; 